package com.google.gwt.sample.dynatablerf.server.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

@Entity
@NamedQueries({

		@NamedQuery(name = ServicoProjeto.SERVICOPROJETO_SUGGEST_QUERY, query = "SELECT p FROM ServicoProjeto p WHERE "
				+ "(:projeto is null or p.projeto = :projeto)"
				+ "AND (:suggestParam is null "
				+ "OR p.servico.codigo like :suggestParam "
				+ "OR p.servico.descricao like :suggestParam)"),

		@NamedQuery(name = ServicoProjeto.SERVICOPROJETO_PESQUISAR, query = "SELECT p FROM ServicoProjeto p WHERE "
				+ "(:id is null or p.id = :id) "
				+ "AND (:projeto is null or :projeto = p.projeto)"),

		@NamedQuery(name = ServicoProjeto.SERVICOPROJETO_COUNT, query = "SELECT COUNT(*) FROM ServicoProjeto p WHERE "
				+ "(:id is null or p.id = :id) "
				+ "AND (:projeto is null or :projeto = p.projeto)")

})
public class ServicoProjeto extends AbstractEntity implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static final String SERVICOPROJETO_PESQUISAR = "ServicoProjeto_Pesquisar";

	public static final String SERVICOPROJETO_COUNT = "ServicoProjeto_Count";

	public static final String SERVICOPROJETO_SUGGEST_QUERY = "ServicoProjeto_Suggest_Query";

	private Date dataInicio;

	private Date dataTermino;

	private double quantidade;

	private String unidadeMedida;

	private int quantidadeUnitaria;

	private double valor;

	private double valorPago;

	private Date dataPagamento;

	@ManyToOne
	private Servico servico;

	@ManyToOne
	private Projeto projeto;

	public ServicoProjeto() {
		super();
	}

	public ServicoProjeto(Date dataInicio, Date dataTermino, double quantidade,
			String unidadeMedida, int quantidadeUnitaria, double valor,
			double valorPago, Date dataPagamento, Servico servico) {
		this();
		this.dataInicio = dataInicio;
		this.dataTermino = dataTermino;
		this.quantidade = quantidade;
		this.unidadeMedida = unidadeMedida;
		this.quantidadeUnitaria = quantidadeUnitaria;
		this.valor = valor;
		this.valorPago = valorPago;
		this.dataPagamento = dataPagamento;
		this.servico = servico;
	}

	public Date getDataInicio() {
		return dataInicio;
	}

	public void setDataInicio(Date dataInicio) {
		this.dataInicio = dataInicio;
	}

	public Date getDataTermino() {
		return dataTermino;
	}

	public void setDataTermino(Date dataTermino) {
		this.dataTermino = dataTermino;
	}

	public double getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(double quantidade) {
		this.quantidade = quantidade;
	}

	public String getUnidadeMedida() {
		return unidadeMedida;
	}

	public void setUnidadeMedida(String unidadeMedida) {
		this.unidadeMedida = unidadeMedida;
	}

	public int getQuantidadeUnitaria() {
		return quantidadeUnitaria;
	}

	public void setQuantidadeUnitaria(int quantidadeUnitaria) {
		this.quantidadeUnitaria = quantidadeUnitaria;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	public double getValorPago() {
		return valorPago;
	}

	public void setValorPago(double valorPago) {
		this.valorPago = valorPago;
	}

	public Date getDataPagamento() {
		return dataPagamento;
	}

	public void setDataPagamento(Date dataPagamento) {
		this.dataPagamento = dataPagamento;
	}

	public Servico getServico() {
		return servico;
	}

	public void setServico(Servico servico) {
		this.servico = servico;
	}

	public Projeto getProjeto() {
		return projeto;
	}

	public void setProjeto(Projeto projeto) {
		this.projeto = projeto;
	}
}
